package com.lanou3g.code0424;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Created by dllo on 18/4/24.
 */
public class MapMain {
    public static void main(String[] args) {

        //用于缓存;发送一组用户名密码,让索引key变成有意义的名字



        /*
        * HashMap 是一种ey-ValueK(K-V)的数据模型,可以把它理解为一个数组
        * 只是下标可以是任意类型数据,要想取map中存储的Value,只能够通过key
        * 来取,对于一个Map来说,它当中的key,是不能够重复的,一个Key必须对应一个确定的值
        * 但是,值是可以重复的
        *
        * 如果向map中放入已有的key,就会把之前的 Key-Value覆盖
        *
        * map中的key和Value都可以是null,运行后不会崩溃
        *
        * 如果想要获取Map中的所有数据,但是又不知道里面有什么key,那么可以先通过keySet()方法,去获取一个所有key的集合
        * 再遍历这个集合,取出每一个key,就可以通过key来取Value了
        *
        * hashMap是线程不安全
        * */

        Map<Integer,String> map = new HashMap<>(); //一一对应关系,但是不必须是数字与之对应


        Set<Integer> integers = map.keySet(); //不知道map中的东西是什么,可以遍历map取得key的集合
        for (Integer integer : integers) {
            System.out.println(integer);

        }

        map.put(0,"张三") ;
        map.put(1,"李四");
        map.put(2,"张三");
        map.put(0,"王五");
        map.put(5,null);
        map.put(null,null);

        System.out.println(map.get(0)); //如果key相等,后面的覆盖前面的相同的key的值
        System.out.println(map.get(1));
        System.out.println(map.get(2));
        System.out.println(map.get(0));

//        Map<String,String> map1 = new HashMap<>();
//        map1.put("ipd","李四");
//        System.out.println(map1.get("ipd"));


        Map<Integer,Person> map2 = new HashMap<>(); //一一对应关系,但是不必须是数字与之对应

        map2.put(0,new Person("aaa")) ;
        map2.put(1,new Person("333"));
        map2.put(3,new Person("bvbb"));
        map2.put(3,new Person("ggg"));

        System.out.println(map2.get(3).getName());

        map2.get(3).setName("dfdfd");

        System.out.println(map2.get(3).getName());







    }
}
